<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Constrained Application Protocol</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Constrained_Application_Protocol"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Constrained_Application_Protocol rootpage-Constrained_Application_Protocol skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Constrained Application Protocol</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>Das <b>Constrained Application Protocol</b> (<b>CoAP</b>) ist ein von der <a href="Internet_Engineering_Task_Force" title="Internet Engineering Task Force">Internet Engineering Task Force</a> (IETF) entwickeltes Web-Transfer-Protokoll für das <a href="Internet_der_Dinge" title="Internet der Dinge">Internet of Things</a> (IoT).
Es ist ein speziell für <a href="Eingebettetes_System" title="Eingebettetes System">eingebettete</a> Geräte entwickeltes Protokoll, welches die Grundzüge von <a href="Representational_State_Transfer" title="Representational State Transfer">REST</a> übernimmt. Das Protokoll ist im RFC 7252<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> spezifiziert.
</p><p>Die Anwendung vom CoAP-Protokoll umfasst Umgebungsüberwachungen, intelligente Gebäude- und Lichtsteuerungen, Smart Energy und noch vieles mehr aus dieser Sparte. Es wurde als Standardprotokoll entwickelt, das die Interaktion zwischen IoT-Geräten/Systemen ermöglicht und somit IoT-Anwendungen unterstützt. Wichtig dabei ist, dass das CoAP-Protokoll die Länge des Datagramms so gering wie möglich hält und gleichzeitig das REST-Protokoll integriert, um den „<a href="Uniform_Resource_Identifier" title="Uniform Resource Identifier">Uniform Resource Identifier</a>“ (URI) zu unterstützen.
</p><p>Funktionen:
</p>
<ul><li>Begrenztes Web-Protokoll, das alle Anforderungen an M2M-Kommunikation (Machine to Machine) erfüllt</li>
<li>Gewährleistung der Sicherheit durch <a href="Datagram_Transport_Layer_Security" title="Datagram Transport Layer Security">DTLS</a></li>
<li>Asynchroner Nachrichtenaustausch</li>
<li>Geringer Overhead</li>
<li>Geringe Komplexität bei der syntaktischen Analyse (<a href="Parser" title="Parser">Parsing</a>)</li>
<li>URI- und Content-Type Unterstützung</li>
<li>Einfache Caching- und Proxy-Fähigkeiten</li>
<li>UDP-Übertragung mit der Möglichkeit von Unicast und Multicast</li></ul>
<p>CoAP ist ein netzwerkorientiertes Protokoll, das dem HTTP-Protokoll sehr ähnelt. Es nutzt dabei Features von HTTP, erlaubt aber einen geringeren Overhead und auch einen Multicast. Das HTTP-Protokoll ermöglicht die notwendige Interoperabilität für IoT-Geräte. HTTP nutzt TCP für Point-to-Point Verbindungen, ist aber für abgegrenzte Netzwerke zu komplex. CoAP hingegen benutzt primär UDP ohne komplexe Staukontrolle. Die Kombination von REST-Methoden und UDP ermöglichen es CoAP, die Begrenzungen von HTTP zu erweitern und so die Kommunikation für IoT-Geräte zu erleichtern und sicherzustellen.
</p>
<table class="wikitable" style="text-align:center;">
<caption>Protokoll-Vergleich
</caption>
<tbody><tr>
<th>HTTP
</th>
<th style="text-align:left">CoAP
</th></tr>
<tr>
<th rowspan="2"><a href="Http" class="mw-redirect" title="Http">HTTP-Protokoll</a>
</th>
<td>Anfrage/Antwort
</td></tr>
<tr>
<td>Nachrichten
</td></tr>
<tr>
<th><a href="Transmission_Control_Protocol" title="Transmission Control Protocol">TCP</a>
</th>
<td><a href="User_Datagram_Protocol" title="User Datagram Protocol">UDP</a>
</td></tr>
<tr>
<th><a href="Internet_Protocol" title="Internet Protocol">IP</a>
</th>
<td><a href="6LoWPAN" title="6LoWPAN">6LoWPAN</a>
</td></tr></tbody></table>
<p>Bei der Einführung von CoAP wurde davon ausgegangen, dass UDP [RFC 768<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>] und das Datagram Transport Layer Security Protokoll (DTLS) [RFC 6347<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>] über UDP uneingeschränkt genutzt werden kann. Da UDP aber bei vielen Zugangsnetzen vollkommen blockiert und auch der UDP-Verkehr in einigen Netzwerken begrenzt wird, wurde CoAP über TCP [RFC 793<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>] und <a href="Transport_Layer_Security" title="Transport Layer Security">TLS</a> [RFC 5246<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>] eingeführt. Hierbei kommen die besonderen Eigenschaften von CoAP über TCP bei einem NAT-Traversal zu tragen, da die Berechnung der Verfallszeiten basierend auf dem Transportschichtprotokoll berechnet werden, welche von den Anwendungsprotokollen verwendet werden. Der Mittelwert von TCP-NAT-Bindungszeitüberschreitungen liegt bei 386 Minuten, wohingegen der Mittelwert bei UDP bei 160 Sekunden liegt.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Kürzere Bindungszeitüberschreitungen fordern mehr Keepalive-Nachrichten und erhöhen somit den Traffic. Des Weiteren nutzt TCP auch zusätzliche Stau- und Flusskontrollmechanismen, welche bei größeren Übertragungslasten nützlich sind.
</p><p>Trotz allem wird die Übertragung von CoAP über UDP immer noch präferiert, wenn es eine geringe Anzahl an Knoten gibt und die Übertragung blockweise ablaufen soll. Der Nachteil von CoAP über TCP ist, dass es zu größeren Paketen, erhöhtem Speicherverbrauch und einem umfangreicheren Code führt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Sicherheitsaspekte">Sicherheitsaspekte</h2></div>
<p>Bei der UDP-Übertragung ist das DTLS-Protokoll ein wichtiger Bestandteil, da es die drei Aspekte von Sicherheit abdeckt und somit eine sichere End-to-End-Verbindung erlaubt:
</p>
<ul><li><a href="Integrit%C3%A4t_(Informationssicherheit)" title="Integrität (Informationssicherheit)">Integrität</a></li>
<li><a href="Authentifizierung" title="Authentifizierung">Authentifizierung</a></li>
<li><a href="Vertraulichkeit" title="Vertraulichkeit">Vertraulichkeit</a></li></ul>
<p>Die IETF hat das DTLS-Protokoll weiterentwickelt und für die Nutzung mit TCP erweitert. Dadurch können die Probleme der Paketreihenfolge und -verluste behoben werden, indem Paketwiederholungen, Sequenznummern während eines TCP-Handshakes und Wiederholungserkennung implementiert wurden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Format">Format</h2></div>
<p>Die standardmäßige Übertragung erfolgt über UDP und basiert auf dem Grundsatz zum Austausch von kompakten Nachrichten. Dabei wird ein Binärformat in einfacher Form verwendet.
</p>
<table class="wikitable" style="text-align:center;">
<caption>CoAP Nachrichtenformat
</caption>
<tbody><tr>
<th>0
</th>
<th>1
</th>
<th>2
</th>
<td>3
</td></tr>
<tr>
<th colspan="4">1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
</th></tr>
<tr>
<th>Ver
</th>
<th>T
</th>
<th>Code
</th>
<td>Nachrichten ID
</td></tr>
<tr>
<th colspan="4">Token (variable Länge)
</th></tr>
<tr>
<th colspan="4">Optionen (Wenn vorhanden)
</th></tr>
<tr>
<th colspan="4">Payload (Nutzdaten)
</th></tr></tbody></table>
<p>Eine Nachricht besteht aus:
</p>
<ul><li>4-Byte Header (fixe Größe)</li>
<li>Token mit variabler Länge</li>
<li>CoAP-Optionen</li>
<li>Nutzdaten</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li>Zach Shelby, Klaus Hartke, Carsten Bormann: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */
.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}
/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc7252" class="extiw external" title="rfc:7252">7252</a></span></i> – <i><span lang="en">The Constrained Application Protocol (CoAP)</span></i>. (englisch).</li>
<li>C. Bormann, S. Lemay, H. Tschofenig, K. Hartke, B. Silverajan: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc8323" class="extiw external" title="rfc:8323">8323</a></span></i> – <i><span lang="en">CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</span></i>. Februar 2018 (englisch).</li>
<li><span class="cite">Xi Chen: <a rel="nofollow" class="external text" href="https://www.cse.wustl.edu/~jain/cse574-14/ftp/coap/"><i>Constrained Application Protocol for Internet of Things.</i></a><span class="Abrufdatum"> Abgerufen am 15. Mai 2022</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AConstrained+Application+Protocol&rft.title=Constrained+Application+Protocol+for+Internet+of+Things&rft.description=Constrained+Application+Protocol+for+Internet+of+Things&rft.identifier=https%3A%2F%2Fwww.cse.wustl.edu%2F%7Ejain%2Fcse574-14%2Fftp%2Fcoap%2F&rft.creator=Xi+Chen&rft.language=en"> </span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Zach Shelby, Klaus Hartke, Carsten Bormann: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc7252" class="extiw external" title="rfc:7252">7252</a></span></i> – <i><span lang="en">The Constrained Application Protocol (CoAP)</span></i>. (englisch).</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a href="Jon_Postel" title="Jon Postel">Jon Postel</a>: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc768" class="extiw external" title="rfc:768">768</a></span></i> – <i><span lang="en">User Datagram Protocol</span></i>. August 1980 (englisch).</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc6347" class="extiw external" title="rfc:6347">6347</a></span></i> – <i><span lang="en">Datagram Transport Layer Security Version 1.2</span></i>. Januar 2012 (englisch).</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc793" class="extiw external" title="rfc:793">793</a></span></i> – <i><span lang="en">Transmission Control Protocol</span></i>. September 1981 (englisch).</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc5246" class="extiw external" title="rfc:5246">5246</a></span></i> – <i><span lang="en">The Transport Layer Security (TLS) Protocol Version 1.2</span></i>. August 2008 (englisch).</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text">C. Bormann, S. Lemay, H. Tschofenig, K. Hartke, B. Silverajan: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc8323" class="extiw external" title="rfc:8323">8323</a></span></i> – <i><span lang="en">CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</span></i>. Februar 2018 (englisch).</span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-08-07" href="https://de.wikipedia.org/wiki/?title=Constrained_Application_Protocol&oldid=247484393">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>